/*! \file DriverManager.h holds the driver manager functionality */
#ifndef __DRIVER_MANAGER_H_INCLUDED_H__
#define __DRIVER_MANAGER_H_INCLUDED_H__

#include "IrDeviceList.h"
#include "IMceIrDrv.h"
#include "IrDecoderManager.h"
#include "Publisher.h"

#include "ILogger.h"
#include <vector>
#include <string>

/*! The driver manager is responsible for opening and closing the driver instances. */
class DriverManager {
public:
	
	typedef std::vector<IMceIrDrvPtr> DriverList;

	DriverManager ();
	~DriverManager ();

	DriverList & get();
	PublisherPtr publisher();

protected:	
	ILoggerPtr m_Logger;
	/*! Returns the IR decoder */
	IrDecoderManagerPtr m_Decoders;
	/*! returns the IR code publisher */
	PublisherPtr m_Publisher;
	/*! returns the list of drivers currently active. */
	DriverList m_Drivers;
};



#endif